package com.mvvm.start.common.mvvm.v.dialog

import android.content.Context
import android.view.Gravity
import android.view.WindowManager
import android.webkit.WebSettings
import android.webkit.WebView
import android.text.*
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.view.View
import android.view.Window
import com.mvvm.start.base.base.BaseDialog
import com.mvvm.start.base.utils.ConstantUtils
import com.mvvm.start.base.utils.ktstartActivity
import com.mvvm.start.base.utils.toResourcesColor
import com.mvvm.start.common.R
import com.mvvm.start.common.databinding.ProtocolDialogBinding
import com.mvvm.start.common.mvvm.v.activity.WebActivity

class ProtocolDialog(context: Context) :
    BaseDialog<ProtocolDialogBinding>(context) {
    override fun initWindow(window: Window) {
        val dialogParams: WindowManager.LayoutParams = window!!.attributes
        dialogParams.apply {
            width = WindowManager.LayoutParams.WRAP_CONTENT
            height = WindowManager.LayoutParams.WRAP_CONTENT
            //设置底部显示
            gravity = Gravity.CENTER
        }
        window!!.attributes = dialogParams
    }

    fun getWebView(): WebView {
        return viewBinding.webView
    }

    override fun canCancel() = false

    fun setCancelAndSureClick(cancelBlock: () -> Unit, sureBlock: () -> Unit) {
        viewBinding.tvAgree.setOnClickListener {
            dismiss()
            sureBlock()
        }
        viewBinding.tvOut.setOnClickListener {
            dismiss()
            cancelBlock()
        }
    }

    override fun initView() {
        setCancelable(false)
        //声明WebSettings子类
        val webSettings: WebSettings = viewBinding.webView.getSettings()
        //如果访问的页面中要与Javascript交互，则webview必须设置支持Javascript
        webSettings.javaScriptEnabled = true
        webSettings.domStorageEnabled = true
        // 若加载的 html 里有JS 在执行动画等操作，会造成资源浪费（CPU、电量）
        // 在 onStop 和 onResume 里分别把 setJavaScriptEnabled() 给设置成 false 和 true 即可
        //设置自适应屏幕，两者合用
        webSettings.useWideViewPort = true //将图片调整到适合webview的大小
        webSettings.loadWithOverviewMode = true // 缩放至屏幕的大小
        //缩放操作
        webSettings.setSupportZoom(true) //支持缩放，默认为true。是下面那个的前提。
        webSettings.builtInZoomControls = true //设置内置的缩放控件。若为false，则该WebView不可缩放
        webSettings.displayZoomControls = false //隐藏原生的缩放控件
        //其他细节操作
        webSettings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK //关闭webview中缓存
        viewBinding.webView.clearCache(true)
        webSettings.allowFileAccess = true //设置可以访问文件
        webSettings.javaScriptCanOpenWindowsAutomatically = true //支持通过JS打开新窗口
        webSettings.loadsImagesAutomatically = true //支持自动加载图片
        webSettings.defaultTextEncodingName = "utf-8" //设置编码格式
        val webUrl: String = "http://app.zlfc.mobi/app/com.zlfcapp.auto/user.html"
        viewBinding.webView.loadUrl(webUrl)
        viewBinding.tvContent.apply {
            append("请你务必审慎阅读、充分理解“隐私政策”和“服务协议各条款，包括但不限于:为了向你提供更好的服务,我们需要收集你的设备信息、操作日志等个人信息。你可以阅读")
            append(SpannableStringBuilder("《隐私条款》").apply {
                setSpan(object : ClickableSpan() {
                    override fun onClick(widget: View) {
                        ktstartActivity<WebActivity> {
                            putExtra("title", "隐私政策")
                            putExtra("url", ConstantUtils.H5_PRIVACY_POLICY)
                        }
                    }

                    override fun updateDrawState(ds: TextPaint) {
                        super.updateDrawState(ds)
                        ds.color = R.color.red.toResourcesColor()
                        ds.isUnderlineText = true
                    }
                }, 0, this.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
            })
            append("和")
            append(SpannableStringBuilder("《服务协议》").apply {
                setSpan(object : ClickableSpan() {
                    override fun onClick(widget: View) {
                        ktstartActivity<WebActivity> {
                            putExtra("title", "服务协议")
                            putExtra("url", ConstantUtils.H5_SERVICE_AGREEMENT)
                        }
                    }

                    override fun updateDrawState(ds: TextPaint) {
                        super.updateDrawState(ds)
                        ds.color = R.color.red.toResourcesColor()
                        ds.isUnderlineText = true
                    }
                }, 0, this.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
            })
            movementMethod = LinkMovementMethod()
            append("了解详细信息。如果你同意,请点击“同意”解详细信息。开始接受我们的服务。")
        }
    }

    override fun initData() {
    }


}